// 缓存管理类
import 'package:shared_preferences/shared_preferences.dart';

class HiCache{
  SharedPreferences? prefs;
  HiCache._() {
    init();
  }
  // 预处理构造方法，因为异步有可能会出现调用的时候初始化还没完成的情况
  HiCache._pre(SharedPreferences prefs) {
    this.prefs = prefs;
  }
  // 实例
  static HiCache _instance = HiCache._();
  // 获取单例的静态方法
  static HiCache getInstance() {
    return _instance;
  }
  // 添加一个预处理方法，防止使用的时候没有初始化
  static Future<HiCache> preInit() async {
    if (_instance == null) {
      var prefs = await SharedPreferences.getInstance();
      _instance = HiCache._pre(prefs);
    }
    return _instance;
  }
  // 初始化方法，构造函数会调用
  void init() async {
    if (prefs == null) {
      prefs = await SharedPreferences.getInstance();
    }
  }
  // 设置相关方法
  Future<bool> setInt(String key, int value) {
    return prefs!.setInt(key, value);
  }
  Future<bool> setBool(String key, bool value) {
    return prefs!.setBool(key, value);
  }
  Future<bool> setString(String key, String value) {
    return prefs!.setString(key, value);
  }
  Future<bool> setStringList(String key, List<String> value) {
    return prefs!.setStringList(key, value);
  }
  Future<bool> setDouble(String key, double value) {
    return prefs!.setDouble(key, value);
  }

  T? get<T>(String key) {
    return prefs!.get(key) as T?;
  }
}